AWS Tools for PowerShell インストールをRun Commandで省力化する
こんにちは。 ご機嫌いかがでしょうか。 "No human labor is no human error" が大好きな吉井です。
AWS Tools for PowerShell をお使いでしょうか? EC2 上の Windows Server で S3 などの AWS サービスを利用したい場合に導入することがあるかもしれません。
インストール自体は簡単なのですが、台数が増えてくるとやはり面倒です。 Systems Manager Run Command を使って省力化してみたいと思います。
前提
SSM セットアップ
この処理は SSM を使います。 SSM のセットアップを行ってください。 手順は本エントリでは割愛します。公式ドキュメントを参照ください。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/systems-manager-setting-up.html
Run Command セットアップ
Run Command のセットアップも割愛します。公式ドキュメントを参照ください。
https://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/sysman-rc-setting-up.html
実装
それでは実装します。 マネジメントコンソールへログインし Systems Manager を開きます。 左側メニューから ドキュメント をクリックします。 <ドキュメント>画面が表示されたら、ドキュメントの作成 をクリックします。
<ドキュメントの作成>画面では、判別しやすい名前を入力します。
コンテンツの YAML にチェックを入れ、コンテンツは以下をコピー&ペーストします。
--- schemaVersion: "2.2" description: "Install AWS Tools for Powershell" parameters: executionTimeout: type: "String" default: "3600" description: "(Optional) The time in seconds for a command to complete before it is considered to have failed. Default is 3600 (1 hour). Maximum is 172800 (48 hours)." allowedPattern: "([1-9][0-9]{0,4})|(1[0-6][0-9]{4})|(17[0-1][0-9]{3})|(172[0-7][0-9]{2})|(172800)" mainSteps: - name: installToolsForPowerShell action: aws:runPowerShellScript inputs: runCommand: - $progressPreference = 'SilentlyContinue' - Write-Host '---------------' - Write-Host 'Downloading AWS Tools' - Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force - Install-Module -Name AWSPowerShell -Force - Write-Host '---------------' - Write-Host 'Change ExecutionPolicy' - Set-ExecutionPolicy RemoteSigned -Force -Scope Process - Get-ExecutionPolicy - Write-Host '---------------' - Write-Host 'Import Tools for Powershell' - Import-Module AWSPowerShell - Get-AWSPowerShellVersion - Get-AWSPowerShellVersion -ListServiceVersionInfo timeoutSeconds: "{{executionTimeout}}"
コンテンツの貼り付けが終わったらページ下部の ドキュメントの作成 をクリックします。
オペレーション
作成したドキュメントを実行します。 左側メニューから ランコマンド をクリックします。
<コマンドの実行>画面で コマンドの実行 をクリックします。 前の手順で作成したドキュメントを探し、ラジオボタンにチェックを入れます。
ターゲットインスタンス から対象のインスタンスを選択します。
出力オプション で任意の S3 バケットを選択します。 Run Command の出力はコンソールでは2500文字しか表示されず、日本語が文字化けします。 エラー時の解析を容易にするため、及び、実行証跡を残すために必ず S3 バケットを出力するようにします。
実行 ボタンをクリックすると処理が実行されます。 実行の詳細が表示されるので成功することを確認します。
結果
指定した S3 バケットの保存されている実行ログファイルを確認してみます。 正しくインストールされているようです。
~~略~~ Import Tools for Powershell AWS Tools for Windows PowerShell Version 3.3.450.0 Copyright 2012-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved. Amazon Web Services SDK for .NET Core Runtime Version 3.3.31.7 Copyright 2009-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. Release notes: https://aws.amazon.com/releasenotes/PowerShell This software includes third party software subject to the following copyrights: - Logging from log4net, Apache License [http://logging.apache.org/log4net/license.html] ~~略~~
さいごに
Run Command を活用した AWS Tools for PowerShell のインストール方法を紹介しました。 わずか2~3行のコマンドを打つとしても台数が増えればヒューマンエラーの可能性は上がっていきます。 極力人手は減らしていきたいと思います。
参考
AWS Tools for PowerShell AWS Tools for Windows PowerShell または AWS Tools for PowerShell Core のセットアップ